package org.andengine.util.adt.map;

import android.util.SparseArray;

import java.util.HashMap;

/**
 * (c) 2012 Zynga Inc.
 *
 * @author Nicolas Gramlich <ngramlich@zynga.com>
 * @since 15:30:35 - 26.04.2012
 */
public class IntLookupMap<T> implements IIntLookupMap<T> {
    // ===========================================================
    // Constants
    // ===========================================================

    // ===========================================================
    // Fields
    // ===========================================================

    private final HashMap<T, Integer> mItemToValueMapping = new HashMap<T, Integer>();
    private final SparseArray<T> mValueToItemMapping = new SparseArray<T>();

    // ===========================================================
    // Constructors
    // ===========================================================

    // ===========================================================
    // Getter & Setter
    // ===========================================================

    // ===========================================================
    // Methods for/from SuperClass/Interfaces
    // ===========================================================

    @Override
    public void add(final T pName, final int pValue) {
        this.mItemToValueMapping.put(pName, Integer.valueOf(pValue));
        this.mValueToItemMapping.put(pValue, pName);
    }

    @Override
    public T item(final int pValue) {
        return this.mValueToItemMapping.get(pValue);
    }

    @Override
    public int value(final T pName) {
        final Integer value = this.mItemToValueMapping.get(pName);
        if (value == null) {
            return -1;
        } else {
            return value.intValue();
        }
    }

    // ===========================================================
    // Methods
    // ===========================================================

    // ===========================================================
    // Inner and Anonymous Classes
    // ===========================================================
}